草庐IT

c++ - WinAPI 双缓冲

全部标签

c - fwrite() 性能远低于磁盘容量

我有一个包含1700万个元素的struct动态分配数组。为了将它保存到磁盘,我写了fwrite(StructList,sizeof(Struct),NumStructs,FilePointer)在后面的步骤中,我使用等效的fread语句读取它,即使用sizeof(Struct)和NumStructs的计数.我预计生成的文件大约为3.5GB(这都是x64)。是否可以通过传递sizeof(Struct)*NumStructs作为大小和1作为计数来加快速度?我绞尽脑汁想知道为什么在具有32GBRAM(大量写入缓存)的快速计算机上写入操作可能需要分钟。我已经运行了自制基准测试,缓存足够激进,前

c - 是否可以在 Windows 机器上为 Linux 编译 CUDA C 代码?

我有一个问题。我需要为linux编译C代码,但我使用的是我真正想要使用的WindowsIDE。因此,我需要一个像gcc这样能够编译C代码的命令行编译器可执行文件。此外,我还需要能够将CUDAC代码编译成linux程序。因此我的问题:是否可以在Windows机器上将CUDAC代码编译成Linux程序?如果可能的话,有人可以给出设置编译器的完整描述吗?谢谢! 最佳答案 我会选择在Windows之上的虚拟UbuntuLinux您可以使用virtualbox来做到这一点虚拟机 关于c-是否可以在

windows - 跟踪移动的桌面窗口 WinApi

我正在尝试跟踪移动的桌面应用程序窗口,以便我可以平移相应的透明覆盖窗口。目前,我使用SetWinEventHookHookEVENT_SYSTEM_MOVESIZEEND事件。在我的回调中,我使用目标应用程序窗口的新位置更新了我的叠加层的位置。这行得通,但这意味着在用户放开目标窗口的标题栏后,我的叠加层会跳来跳去。我希望我的叠加层能够在移动时跟踪目标窗口,而不是在它移动之后。我能想到的唯一方法是同时HookEVENT_SYSTEM_MOVESIZESTART事件。当START事件触发时,生成一个新线程来轮询目标窗口位置并更新我的覆盖位置。然后,当END事件触发时,终止轮询线程。这是一种

c++ - 如何在 MFC 中禁用 CListCtrl 的水平滚动条?

我的MFC工程中有一个CListCtrl控件,我不想随时显示横向的ScrollBar。但是垂直的需要正常显示。我用的是VS2010,有解决办法吗? 最佳答案 您可以通过派生您的List控件并拥有类似这样的东西来做到这一点:voidCListCtrlEx::OnNcCalcSize(BOOLbCalcValidRects,NCCALCSIZE_PARAMSFAR*lpncsp){ModifyStyle(WS_HSCROLL,0);CListCtrl::OnNcCalcSize(bCalcValidRects,lpncsp);}或者如果

c - Armstrong 数字程序在使用 Codeblocks 和 MinGW(32 位)编译时产生错误结果

我想编写一个程序来判断一个数字是否是阿姆斯壮数字。我为此编写了一个函数,如果数字是armstrong数字则返回1,否则返回0。我在函数中使用了以下代码:intisArmsNum(intx){intm,r=0,d,y;y=x;while(x>0){m=x%10;r=r+pow(m,3);x=x/10;}if(r==y){d=1;}if(r!=y){d=0;}returnd;}现在的问题是,当我尝试检查程序中的153(这是一个armstrong数字)时,程序返回0,并且仅当x=1时才返回1。我在VisualStudio2013中编译了相同的代码,它是工作正常。我决定对Codeblocks(

c - 在c中使用exe文件

(在Windows8上工作)我正在尝试使用c获取exe文件(PE32格式)中节标题的大小。根据我的阅读,此字段的偏移量为60,因此我尝试从那里读取。这是我使用的代码:unsignedcharoffset;fseek(file,60,SEEK_SET);fread(&offset,sizeof(offset),1,file);printf("%hu",offset);我的问题是如何获得节标题的大小?如果它不在偏移量60上,我该如何找到它? 最佳答案 这应该有效:voidmain(){FILE*file=fopen("your_exe_

windows - 如何使用winapi获取列表框中项目的矩形

我使用的是VC6.0。当我右键单击列表框的项目时,我正在尝试编程以显示上下文菜单。但是现在弹出菜单可以显示在ListBox的rect中的任何位置,因为我只能获取ListBox的rect,而我不知道如何获取item的rect。我知道有一个宏ListView_GetSubItemRect似乎可以获取ListView项目的矩形。ListBox是否有类似的方法,或者有没有办法获取ListBox项目的宽度和高度,以便我可以计算矩形?我没有在msdn和google上找到一些有用的信息?谁能给我一些想法?谢谢。我当前的代码:voidMy_OnContextMenu(HWNDhwnd,HWNDhwnd

使用 Windows API 比较线程 ID

我正在使用WindowsAPI线程,我想比较线程ID。首先,我用CreateThread()创建了一个线程并存储我从函数中获取的句柄(HANDLE)和ID(LPDWORD)。然后我使用GetCurrentThread()从创建的线程中获取句柄和ID和GetThreadId().对于两个句柄和两个ID,我总是得到不同的值。有没有办法以类似于pthread的方式比较线程?我这样做是为了作为确认正确执行的调试选项。我总是从其他库(pthread.h、threads.h)但不是从Windowsapi得到正确的结果。这不是一个关键问题,但我想学习winapi中的程序

无法建立服务器客户端连接 - C winsock 中的错误 10061

我正在尝试在我家中本地网络中的2台计算机上运行服务器客户端。第一台电脑是服务器,第二台是客户端。尝试连接服务器时出现错误10061。(“错误-连接失败。sockfd是164,errno是34,WSA是10061”)。错误10061表示-“连接被拒绝。无法建立连接,因为目标机器主动拒绝它。这通常是由于尝试连接到外部主机上不活动的服务——即没有运行服务器应用程序的服务。”我认为这可能是防火墙问题,所以我在我的防火墙中批准了我正在使用的端口,但它仍然不起作用。此外,两台计算机具有相同的IP(这是为什么?)。这是我的代码:服务器.c:#include#include#include#inclu

c++ - 从源代码构建的 Clang 编译 C 但不编译 C++ 代码

我最近在Windows上编译了clang(主机:x86_64-pc-windows64;编译器:i686-pc-mingw32;目标:i686-pc-mingw32)。可以找到CMakeCache(用于配置):here我的问题是,虽然clang工作正常(对于C),但clang++(对于C++)将“成功”编译和链接,但生成的程序本身不会运行并将退出并返回错误代码1。下面是示例(哦-我的-zsh):➜bincattest.c#includeintmain(){printf("HelloWorld!\n");return0;}➜bincattest.cpp#includeintmain(){